package com.shijie.sjoj.service.mapper;

import com.shijie.sjoj.model.component.LocalDateTimeFillAop.LocalDateTimeFill;
import com.shijie.sjoj.model.pojo.base.Status;
import com.shijie.sjoj.model.pojo.entity.Record;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 解题记录DAO接口
 *
 * @author ZSJ
 */
@Mapper
public interface RecordMapper {

    /**
     * 记录搜索
     *
     * @param userId 用户id
     * @return List
     */
    List<Record> list(@Param("userId") Long userId);

    /**
     * 根据记录id搜索记录
     *
     * @param recordId 记录id
     * @return Record
     */
    Record getByRecordId(@Param("recordId") Long recordId);

    /**
     * 保存记录
     *
     * @param record 记录
     * @return boolean
     */
    @LocalDateTimeFill({LocalDateTimeFill.PUT_TIME})
    boolean save(@Param("record") Record record);

    /**
     * 解题状态变更
     *
     * @param recordId 记录id
     * @param status   状态
     * @return boolean
     */
    boolean changeStatus(@Param("recordId") Long recordId, @Param("status") Status status);

    /**
     * 解题错误信息
     *
     * @param recordId 记录id
     * @param errorTip 错误信息
     * @return boolean
     */
    boolean errorInfo(@Param("recordId") Long recordId, @Param("errorTip") String errorTip);

    /**
     * 解题成功信息
     *
     * @param recordId    记录id
     * @param userTimeMil 使用的时间
     * @param useMemoryKb 使用的内存
     * @return boolean
     */
    boolean successInfo(@Param("recordId") Long recordId, @Param("userTimeMil") Integer userTimeMil, @Param("useMemoryKb") Integer useMemoryKb);


}
